package com.mallcai.bigdata.ladon.dpl.entity.report;

import com.mallcai.bigdata.ladon.dpl.annotation.SortId;
import com.mallcai.bigdata.ladon.dpl.entity.BaseEntity;
import com.mallcai.bigdata.ladon.dpl.vo.QueryFieldType;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

/**
 * @author gst
 * @date 2019-12-30 20:36
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class QueryField extends BaseEntity {
    /**
     * 报表Id
     */
    private Long    reportId;
    /**
     * 字段显示名
     */
    private String  showName;
    /**
     * 查询sql代入名
     */
    private String  queryName;
    /**
     * 字段数据类型
     */
    private String  dataType;
    /**
     * 默认值
     */
    private String  valDefault;
    /**
     * 最大值
     */
    private String  valMax;
    /**
     * 最小值
     */
    private String  valMin;
    /**
     * 禁止使用值
     */
    private String  valForbidden;
    /**
     * 是否为必填字段 0 - 否; 1 - 必填
     */
    private Integer mustFillIn;
    /**
     * 排序方式 ASC, DESC
     */
    private String  orderByType;
    /**
     * 提示信息
     */
    private String  placeholder;
    /**
     * 错误提示信息
     */
    private String  errMessage;
    /**
     * 依赖关系, 取query_name值,多个以逗号分隔
     */
    private String  dependOn;
    /**
     * 字段类型; 1 - 内部字段; 2 - 多选字段; 4 - lov选择; 具体查看类: QueryFieldType.java
     * 例: 3 -> 内部字段 且多选字段; 6 -> lov选择 且 多选字段
     */
    private Integer type;
    /**
     * 当字段值内容依赖别一个sql查询结果时(LOV), 填入
     */
    private Long    lovReportId;
    /**
     * 排序Id
     */
    @SortId
    private Long    sortId;

    // 扩展字段
    /**
     * 对type进行拆分
     */
    private List<Integer> types;

    public void setType(int type) {
        this.types = QueryFieldType.split(type);
        this.type = type;
    }
}
